package br.com.ceped.modelo.obra;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "tbl_obra")
public class Obra implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "codigo_obra")
	private String codigo_obra;

	@Column(name = "nome_obra", length = 120, nullable = false)
	private String nome_obra;

	@Column(name = "sinopse")
	private String sinopse;

	@Column(name = "palavra_chave")
	private String palavra_chave;

	@Column(name = "foco_obra")
	private String foco_obra;

	@Column(name = "tema_obra")
	private String tema_obra;

	@Column(name = "artistas_obra")
	private String artistas_obra;

	@Column(name = "duracao_obra")
	private int duracao_obra;

	@Column(name = "exemplares_obra")
	private int exemplares_obra;

	@Temporal(TemporalType.DATE)
	@Column(name = "data_obra")
	private Date data_obra;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_autor")
	private Autor autor;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_indicacao")
	private Indicacao indicacao;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_direcao")
	private Direcao direcao;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_realizacao")
	private Realizacao realizacao;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_serie")
	private Serie serie;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_tipo")
	private Tipo tipo;

	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "codigo_genero")
	private Genero gernero;

	public String getCodigo_obra() {
		return codigo_obra;
	}

	public void setCodigo_obra(String codigo_obra) {
		this.codigo_obra = codigo_obra;
	}

	public String getNome_obra() {
		return nome_obra;
	}

	public void setNome_obra(String nome_obra) {
		this.nome_obra = nome_obra;
	}

	public String getSinopse() {
		return sinopse;
	}

	public void setSinopse(String sinopse) {
		this.sinopse = sinopse;
	}

	public Date getData_obra() {
		return data_obra;
	}

	public void setData_obra(Date data_obra) {
		this.data_obra = data_obra;
	}

	public Autor getAutor() {
		return autor;
	}

	public void setAutor(Autor autor) {
		this.autor = autor;
	}

	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	public Genero getGernero() {
		return gernero;
	}

	public void setGernero(Genero gernero) {
		this.gernero = gernero;
	}

	public int getDuracao_obra() {
		return duracao_obra;
	}

	public void setDuracao_obra(int duracao_obra) {
		this.duracao_obra = duracao_obra;
	}

	public int getExemplares_obra() {
		return exemplares_obra;
	}

	public void setExemplares_obra(int exemplares_obra) {
		this.exemplares_obra = exemplares_obra;
	}

	public Serie getSerie() {
		return serie;
	}

	public void setSerie(Serie serie) {
		this.serie = serie;
	}

	public String getPalavra_chave() {
		return palavra_chave;
	}

	public void setPalavra_chave(String palavra_chave) {
		this.palavra_chave = palavra_chave;
	}

	public String getFoco_obra() {
		return foco_obra;
	}

	public void setFoco_obra(String foco_obra) {
		this.foco_obra = foco_obra;
	}

	public String getTema_obra() {
		return tema_obra;
	}

	public void setTema_obra(String tema_obra) {
		this.tema_obra = tema_obra;
	}

	public String getArtistas_obra() {
		return artistas_obra;
	}

	public void setArtistas_obra(String artistas_obra) {
		this.artistas_obra = artistas_obra;
	}

	public Indicacao getIndicacao() {
		return indicacao;
	}

	public void setIndicacao(Indicacao indicacao) {
		this.indicacao = indicacao;
	}

	public Direcao getDirecao() {
		return direcao;
	}

	public void setDirecao(Direcao direcao) {
		this.direcao = direcao;
	}

	public Realizacao getRealizacao() {
		return realizacao;
	}

	public void setRealizacao(Realizacao realizacao) {
		this.realizacao = realizacao;
	}

}
